{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# k近邻算法原理：\n",
    "1. 假设有一个带有标签的样本数据集（训练样本集），其中包含每条数据与所属分类的对应关系。\n",
    "2. 输入没有标签的新数据后，将新数据的每个特征与样本集中数据对应的特征进行比较。\n",
    "   a.计算新数据与样本数据集中每条数据的距离。\n",
    "   b.对求得的所有距离进行排序（从小到大，越小表示越相似）。\n",
    "   c.取前 k （k 一般小于等于 20 ）个样本数据对应的分类标签。\n",
    "3. 求 k 个数据中出现次数最多的分类标签作为新数据的分类。\n",
    "\n",
    "给定一个训练数据集，对新的输入实例，在训练数据集中找到与该实例最邻近的 k 个实例，这 k 个实例的多数属于某个类，就把该输入实例分为这个类。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# K近邻算法优点：\n",
    "1. 简单，易于理解，易于实现，无需参数估计，无需训练; \n",
    "2. 对异常值不敏感（个别噪音数据对结果的影响不是很大）; \n",
    "3. 适合对稀有事件进行分类; \n",
    "4. 适合于多分类问题(multi-modal,对象具有多个类别标签)，KNN要比SVM表现要好;"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# K近邻算法缺点：\n",
    "1. 对测试样本分类时的计算量大，内存开销大，因为对每一个待分类的文本都要计算它到全体已知样本的距离，才能求得它的K个最近邻点。\n",
    "2. 可解释性差，无法告诉你哪个变量更重要; \n",
    "3. K值的选择：最大的缺点是当样本不平衡时，如一个类的样本容量很大，而其他类样本容量很小时，有可能导致当输入一个新样本时，该样本的K个邻居中大容量类的样本占多数。该算法只计算“最近的”邻居样本，某一类的样本数量很大，那么或者这类样本并不接近目标样本，或者这类样本很靠近目标样本。无论怎样，数量并不能影响运行结果。可以采用权值的方法（和该样本距离小的邻居权值大）来改进; \n",
    "4. KNN是一种消极学习方法、懒惰算法。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 359,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import operator\n",
    "import pandas as pd\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 360,
   "metadata": {},
   "outputs": [],
   "source": [
    "def creatDataSet():\n",
    "    '''\n",
    "    Parameter:\n",
    "    \n",
    "    Return：\n",
    "        group - 数据集\n",
    "        labels - 标签\n",
    "    '''\n",
    "    group = np.array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])\n",
    "    labels = ['love', 'love', 'action', 'action']\n",
    "    return group, labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 361,
   "metadata": {},
   "outputs": [],
   "source": [
    "def classify0(inX, dataSet, labels, k):\n",
    "    '''\n",
    "    Parameter：\n",
    "        inX ： 输入待分类的向量\n",
    "        dataSet： 已知的训练集（labels确定）\n",
    "        labels: 标签\n",
    "        k：用于选择最近邻居的数目，只能小于等于dataSet的行数\n",
    "    '''\n",
    "    #numpy方法shape[0]，返回dataSet的行数\n",
    "    dataSetSize = dataSet.shape[0]\n",
    "    #numpy方法tile,把inX扩展dataSetSize行，1列，目的是求向量inX（待确认的）与每个训练样本数据（dataSet，已知的）的差值\n",
    "    diffMat = np.tile(inX, (dataSetSize, 1)) - dataSet\n",
    "    #求平方\n",
    "    sqDiffMat = diffMat**2\n",
    "    #sum(axis=1) 是按行求和，即求每组训练集数据与输入向量的距离平方\n",
    "    sqDistances = sqDiffMat.sum(axis=1) \n",
    "    #开平方，以上就是计算欧式距离\n",
    "    distances = sqDistances ** 0.5\n",
    "    #把distance按照从小到大排序，并返回index\n",
    "    sortedDistIndicies = distances.argsort()\n",
    "    #初始化字典\n",
    "    classCount = {}\n",
    "    for i  in range(k):\n",
    "        #取前K个距离对应的labels\n",
    "        voteIlabel = labels[sortedDistIndicies[i]]\n",
    "        #dict.get(key,default=None),字典的get()方法,返回指定键的值,如果值不在字典中返回默认值。\n",
    "        #按类别统计出现的次数\n",
    "        classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1\n",
    "    #对字典classCount 按照value从大到小排序，sortedClassCount是一个list，其中的元素为（key，value）的元组\n",
    "    sortedClassCount = sorted(classCount.items(), key = operator.itemgetter(1), reverse = True)\n",
    "    #list第一个元素即为出现次数最多的label，list第一个元素的为一个元组，元组的第一个元素即为其label\n",
    "    return sortedClassCount[0][0]\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 362,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'action'"
      ]
     },
     "execution_count": 362,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 创建数据集\n",
    "group, labels = creatDataSet()\n",
    "\n",
    "# 测试数据\n",
    "test = [0, 0]\n",
    "\n",
    "classify0(test, group, labels, 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 363,
   "metadata": {},
   "outputs": [],
   "source": [
    "def  file2matrix(filename):\n",
    "    # 用pandas库更简洁，顺便练习pandas\n",
    "    df = pd.read_table(filename, header=None, encoding='utf-8', delim_whitespace=True)\n",
    "    #行数\n",
    "    arrayOLines = df.shape[0]\n",
    "    #选择0,1,2列\n",
    "    returnMat = df.iloc[:, 0:3]\n",
    "    #选择第三列\n",
    "    classLabelVector = df.iloc[:, 3]\n",
    "    #returnMat dataFrame  转numpy，classLabelVector从dataFrame 转list，否则后边函数里数据类型错误，大坑。\n",
    "    return returnMat.values, classLabelVector.tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 364,
   "metadata": {},
   "outputs": [],
   "source": [
    "datingDataMat, datingLabels = file2matrix(\"datingTestSet2.txt\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 365,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "ax = fig.add_subplot(111)\n",
    "t=ax.scatter(datingDataMat[:,1], datingDataMat[:,2], 10.0*np.array(datingLabels), 15.0*np.array(datingLabels))\n",
    "ax.axis([-2,25,-0.2,2.0])\n",
    "plt.xlabel('Percentage of Time Spent Playing Video Games')\n",
    "plt.ylabel('Liters of Ice Cream Consumed Per Week')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "参考：https://blog.csdn.net/program_developer/article/details/78637711\n",
    "\n",
    "# 两种常用的归一化方法：\n",
    "1. min-max标准化\n",
    "2. Z-score标准化方法\n",
    "## min-max标准化（Min-Max Normalization）（线性函数归一化）\n",
    "定义：也称为离差标准化，是对原始数据的线性变换，使得结果映射到0-1之间。\n",
    "本质：把数变为【0,1】之间的小数。\n",
    "转换函数：（X-Min）/(Max-Min)\n",
    "如果想要将数据映射到-1,1，则将公式换成：（X-Mean）/(Max-Min)\n",
    "其中：max为样本数据的最大值，min为样本数据的最小值，Mean表示数据的均值。\n",
    "缺陷：当有新数据加入时，可导致max和min的变化，需要重新定义。\n",
    "## 0均值标准化（Z-score standardization）\n",
    "定义：这种方法给与原始数据的均值（mean）和标准差（standard deviation）进行数据的标准化。经过处理的数据符合标准正态分布，即均值为0，标准差为1.\n",
    "本质：把有量纲表达式变成无量纲表达式。\n",
    "转换函数：（X-Mean）/(Standard deviation)\n",
    "其中，Mean为所有样本数据的均值。Standard deviation为所有样本数据的标准差。\n",
    "\n",
    "## 两种归一化方法的使用场景：\n",
    "1. 在分类、聚类算法中，需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候，第二种方法(Z-score standardization)表现更好。\n",
    "因为：第一种方法(线性变换后)，其协方差产生了倍数值的缩放，因此这种方式无法消除量纲对方差、协方差的影响，对PCA分析影响巨大；同时，由于量纲的存在，使用不同的量纲、距离的计算结果会不同。\n",
    "2. 在不涉及距离度量、协方差计算、数据不符合正太分布的时候，可以使用第一种方法或其他归一化方法。比如图像处理中，将RGB图像转换为灰度图像后将其值限定在0 255的范围。\n",
    "因为：第二种归一化方式中，新的数据由于对方差进行了归一化，这时候每个维度的量纲其实已经等价了，每个维度都服从均值为0、方差1的正态分布，在计算距离的时候，每个维度都是去量纲化的，避免了不同量纲的选取对距离计算产生的巨大影响。\n",
    "\n",
    "# 其它归一化方法\n",
    "1. 对数函数转换，表达式如下：　　\n",
    "\n",
    "y=log10(x)　　\n",
    "\n",
    "说明：以10为底的对数函数转换。\n",
    "\n",
    "\n",
    "\n",
    "# 反余切函数转换，表达式如下：\n",
    "\n",
    "y=atan(x)*2/PI　\n",
    "\n",
    "\n",
    "式(1)将输入值换算为[-1,1]区间的值，在输出层用式(2)换算回初始值，其中和分别表示训练样本集中负荷的最大值和最小值。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 366,
   "metadata": {},
   "outputs": [],
   "source": [
    "def autoNorm(dataSet):\n",
    "    \"\"\"\n",
    "    Desc:\n",
    "        归一化特征值，消除特征之间量级不同导致的影响\n",
    "    parameter：\n",
    "        dataSet： 数据集\n",
    "    return：\n",
    "        归一化后的数据集 nomDataSet， 范围ranges，最下值minVals\n",
    "    归一化公式：\n",
    "        \"newvale = (oldValue - min)/(max - min)\n",
    "    \"\"\" \n",
    "    #0，是计算每行的最小和最大值，即每个数据集的最小和最大，\n",
    "    minVals = dataSet.min(0)\n",
    "    maxVals = dataSet.max(0)\n",
    "    ranges = maxVals - minVals\n",
    "    normDataSet = np.zeros(np.shape(dataSet))\n",
    "    #m是行数，即数据集中数据的个数\n",
    "    m = dataSet.shape[0]\n",
    "    #tile把minVals一列数据可扩展为mx1的矩阵\n",
    "    normDataSet = dataSet - np.tile(minVals, (m, 1))\n",
    "    normDataSet = normDataSet / np.tile(ranges, (m, 1))\n",
    "    return normDataSet, ranges, minVals"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 367,
   "metadata": {},
   "outputs": [],
   "source": [
    "#归一化验证\n",
    "#autoNorm(datingDataMat)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 约会网站预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 368,
   "metadata": {},
   "outputs": [],
   "source": [
    "def datingClassTest():\n",
    "    \"\"\"\n",
    "    Desc:\n",
    "        对约会网站的测试方法\n",
    "    Parameters：\n",
    "        none\n",
    "    return：\n",
    "        错误数\n",
    "    \"\"\"\n",
    "    #设置测试数据的一个比例（训练数据集比例=1-hoRatio）\n",
    "    hoRatio = 0.1\n",
    "    #从文中加载数据\n",
    "    datingDataMat, datingLabels = file2matrix('datingTestSet2.txt')\n",
    "    #归一化数据\n",
    "    normMat, ranges, minVals = autoNorm(datingDataMat)\n",
    "    #m 数据行数\n",
    "    m = normMat.shape[0]\n",
    "    #设置测试的样本数量numTestVecs,m:表示训练样本数量\n",
    "    numTestVecs = int(m*hoRatio)\n",
    "    print('numTestVecs = ', numTestVecs)\n",
    "    errorCount = 0.0\n",
    "    for i in range(numTestVecs):\n",
    "        #对数据测试\n",
    "        classifierResult = classify0(normMat[i, :], normMat[numTestVecs:m, :], datingLabels[numTestVecs:m], 3)\n",
    "        print (\"Index %d, The classfier is %d, the real answer is %d\" % (i, classifierResult, datingLabels[i]))\n",
    "        if (classifierResult != datingLabels[i]): errorCount += 1.0\n",
    "    print (\"The total error rate is : %f\" % (errorCount / float(numTestVecs)))\n",
    "    print (errorCount)           \n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 369,
   "metadata": {},
   "outputs": [],
   "source": [
    "#测试验证\n",
    "#datingClassTest()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 为什么错误率是0.5% 不是2.4%？？？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 370,
   "metadata": {},
   "outputs": [],
   "source": [
    "    #比较两个数据集的不同\n",
    "    df1 = pd.read_table('datingTestSet.txt', header=None, encoding='utf-8', delim_whitespace=True)\n",
    "    df2 = pd.read_table('datingTestSet2.txt', header=None, encoding='utf-8', delim_whitespace=True)\n",
    "    #选择0,1,2列\n",
    "    returnMat1 = df1.iloc[:, 0:3]\n",
    "    returnMat2 = df2.iloc[:, 0:3]\n",
    "    testdatas = returnMat1 - returnMat2\n",
    "    labels = pd.concat([df1.iloc[:, 3:4], df2.iloc[:, 3:4]], axis =1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 371,
   "metadata": {},
   "outputs": [],
   "source": [
    "def classifyPerson():\n",
    "    resultList = ['not at all','in small doses', 'in large doses']\n",
    "    percentTats = float (input(\"percentage of time spent playing video games?\"))\n",
    "    ffMiles = float(input(\"frequent filer miles earned per year?\"))\n",
    "    iceCream = float(input(\"liters of ice cream consumed per year?\"))\n",
    "    datingDataMat, datingLabels = file2matrix('datingTestSet2.txt')\n",
    "    normMat, ranges, minVals = autoNorm(datingDataMat)\n",
    "    inArr = np.array([ffMiles, percentTats, iceCream])\n",
    "    classifierResult = classify0((inArr - minVals)/ranges, normMat, datingLabels, 3)\n",
    "    print(\"you will probably like this person: \", resultList[classifierResult - 1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 374,
   "metadata": {},
   "outputs": [
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "percentage of time spent playing video games? 1\n",
      "frequent filer miles earned per year? 1\n",
      "liters of ice cream consumed per year? 1\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "you will probably like this person:  in small doses\n"
     ]
    }
   ],
   "source": [
    "classifyPerson()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 手写识别"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 375,
   "metadata": {},
   "outputs": [],
   "source": [
    "def pimg2vector (filename):\n",
    "    \"\"\"\n",
    "    用pandas 首先数据读取\n",
    "    \"\"\"\n",
    "    #用pandas读取filename文件\n",
    "    df = pd.read_table(filename, header=None, encoding='utf-8', delim_whitespace=True)\n",
    "    #为了能转换出和书上函数返回结果相同的结构，有点费劲\n",
    "    #returnVect 是（1,1024）的numpy.ndarray\n",
    "    lstr = ''\n",
    "    #遍历所有dataframe中元素，并合并为一个字符串\n",
    "    for ar in df.values:\n",
    "        lstr = lstr + ar[0]\n",
    "    returnVect = np.zeros((1, 1024))\n",
    "    #字符串转成list,则每个字符成为单独的list元素，再转成array，很奇怪转完之后元素就变成numpy.float64,和原始函数一样\n",
    "    returnVect[0,:] = (np.array(list(lstr)))\n",
    "    return returnVect"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 376,
   "metadata": {},
   "outputs": [],
   "source": [
    "def img2vector(filename):\n",
    "    returnVect = np.zeros((1,1024))\n",
    "    fr = open(filename)\n",
    "    for i in range(32):\n",
    "        lineStr = fr.readline()\n",
    "        for j in range(32):\n",
    "            returnVect[0,32*i+j] = int(lineStr[j])\n",
    "    return returnVect"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 377,
   "metadata": {},
   "outputs": [],
   "source": [
    "#test\n",
    "a=img2vector('testDigits/0_13.txt')\n",
    "#print(type(a))\n",
    "#print(a.shape)\n",
    "#print(a[0, 0:31])\n",
    "#print(a.dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 378,
   "metadata": {},
   "outputs": [],
   "source": [
    "#test\n",
    "b=pimg2vector('testDigits/0_13.txt')\n",
    "#print(type(b))\n",
    "#print(b.shape)\n",
    "#print(b[0:31])\n",
    "#print(b.dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def handwritingClassTest():\n",
    "    #获取训练集\n",
    "    hwLabels = []\n",
    "    trainingFileList = listdir('trainingDigits')\n",
    "    m = len(trainingFileList)\n",
    "    for i in range(m):\n",
    "        fileNameStr = trainingFileList[i]\n",
    "        #取文件名，不包括扩展名\n",
    "        fileStr = fileNameStr.split('.')[0]\n",
    "        #结果，标签，分组\n",
    "        classNumStr = int(fileStr.split('_')[0])\n",
    "        # 放入list\n",
    "        hwLabels.append(classNumStr)\n",
    "        trainingMat[i,:] = pimg2vector('trainingDigits/%s' % fileNameStr)\n",
    "    #获取测试集\n",
    "    testFileList = listdir('testDigits')\n",
    "    errorcount = 0.0\n",
    "    mTest = len(testFileList)\n",
    "    for i in range(mTest):\n",
    "        fileNameStr = testFileList[i]\n",
    "        #取文件名，不包括扩展名\n",
    "        fileStr = fileNameStr.split('.')[0]\n",
    "        classNumStr = int(fileStr.split('_')[0])\n",
    "        vectorUnderTest = pimg2vector('testDigits/%s' % fileNameStr)\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
